package com.crane.oss.app.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.crane.oss.app.bean.req.AppBindingStudentReq;
import com.crane.oss.app.bean.req.AppUnBindingStudentReq;
import com.crane.oss.app.bean.req.AppUpdatePicReq;
import com.crane.oss.app.bean.request.QueryAppUserReq;
import com.crane.oss.app.bean.request.appuser.AddAppUserReq;
import com.crane.oss.app.bean.request.appuser.AppLoginCodeRequest;
import com.crane.oss.app.bean.request.appuser.AppLoginRequest;
import com.crane.oss.app.bean.request.appuser.ForgetPasswordRequest;
import com.crane.oss.app.bean.request.appuser.UpdateAppUserReq;
import com.crane.oss.app.bean.request.appuser.WxLoginParam;
import com.crane.oss.app.bean.resp.AppClassesInfoResp;
import com.crane.oss.app.bean.resp.AppUserInfoResp;
import com.crane.oss.app.bean.resp.AppUserResp;
import com.crane.oss.app.bean.resp.AppUserStudentInfoResp;
import com.crane.oss.school.bean.resp.StudentResp;

import java.util.List;

/**
 * @author zhenxing.pi
 * @email ccsu123456@qq.com
 * @date 2022年03月20日 23时05分57秒
 */
public interface AppUserService {

  /**
   * 查詢对象
   *
   * @param id
   * @return
   */
  AppUserResp queryAppUser(Long id);

  List<AppUserResp> queryAppUserForStudent(Long studentId);

  AppUserResp queryAppUser(String phone);

  /**
   * 查询列表
   *
   * @param request
   * @return
   */
  IPage<AppUserResp> queryList(QueryAppUserReq request);

  /**
   * 保持对象
   *
   * @param request
   * @return
   */
  Long save(AddAppUserReq request);

  /**
   * 修改对象
   *
   * @param request
   * @return
   */
  int update(UpdateAppUserReq request);

  /**
   * 删除对象
   *
   * @param id
   * @return
   */
  int delete(Long id);

  AppUserResp queryUserByMobile(String mobile);

  /**
   * 微信小程序登录
   *
   * @param
   * @return
   */
  AppUserInfoResp weChatLogin(WxLoginParam request);

  String loginCode(AppLoginCodeRequest request);

  AppUserInfoResp login(AppLoginRequest request);

  void forgetPassword(ForgetPasswordRequest request);

  void loginOut();

  void updateUserType(Integer userType);

  AppUserStudentInfoResp queryStudentInfo(Long userId);

  void updateUserPicUrl(AppUpdatePicReq appUpdatePicReq);

  AppClassesInfoResp getClassInfo(Long classId);

  void bindingStudent(AppBindingStudentReq appBindingStudentReq);

  void unboundStudent(AppUnBindingStudentReq appBindingStudentReq);

  /**
   * 根据家长用户id获取默认绑定的学生id；
   * @param appUserId
   * @return
   */
  StudentResp getDefaultStudent(Long  appUserId);

  void updateStudentId(Long studentId);
}
